package com.cskaoyan.javase.oop1._12anonymous;

/**
 * 匿名对象
 * 名对象
 * 匿名（anonymous）或者佚名，指的是没有名字或者名字缺失。
 * 或者，说的更清楚一点，就是：在创建对象时，就没有引用指向的对象，就是匿名对象！
 * 匿名对象的语法很简单，只需要在方法等位置中写下列语法：
 *      new 类名();
 *
 * 匿名对象单独存在的意义是不大的,如果一定要单独存在,就必须在匿名对象的定义行直接使用该匿名对象(这种使用方式很少见)
 *
 * 匿名对象更常见于方法当中:
 *      1.作为方法的实参传入方法
 *      2.作为方法的返回值,返回一个对象
 *
 * 匿名对象的优缺点:
 * 优点: 最大的优点就是没有引用接收,用起来比较快,代码少一点(偷懒)
 * (理论上的) 更早成为垃圾,更早被回收
 *
 * 缺点: 一次性
 * 总之,如果某个对象，仅使用一次，使用匿名对象简洁方便。
 * 但如果有多次使用某个类的对象的需求时，频繁使用匿名对象会导致频繁创建对象，降低代码性能，得不偿失！
 *
 * @since 17:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Student s = new Student(18);
        // 匿名对象
        System.out.println(new Student(88).age);
        new Student(22).eat();

        test(s);
        test(new Student(88));
    }

    public static void test(Student s) {
    }

    public static Student test() {
        // Student s = new Student(18);
        // return s;
        return new Student(18);
    }
}

class Student {
    int age;

    public Student(int age) {
        this.age = age;
    }

    public void eat() {
        System.out.println("五点了,晚上吃什么呢?");
    }
}